/*
 * TbTestMapper.java
 * Copyright © 0000-9999 caoxy Technologies Inc.
 * All right reserved.
 * 奥里给
 */
package io.gitee.caoxiaoyu97.mybatis.dao.inter;

import com.github.pagehelper.Page;
import io.gitee.caoxiaoyu97.mybatis.dao.entity.TbTest;
import io.gitee.caoxiaoyu97.mybatis.dao.entity.TbTestExample;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

/**
 * @Title tb_test表的Mapper类
 * @author caoxiaoyu31978
 * @description 
 * <p>
 * 这是工具生成代码，禁止手工修改
 */
@Mapper
public interface TbTestMapper {
    /**
     * 根据指定的条件获取数据库记录数:tb_test
     *
     * @param example Example对象
     * @return long 符合条件的记录数
     */
    long countByExample(TbTestExample example);

    /**
     * 根据指定的条件和表后缀获取数据库记录数:tb_test
     *
     * @param example         Example对象
     * @param tableSuffixList 表后缀集
     * @return long
     */
    long countByExampleSuffix(@Param("example") TbTestExample example, @Param("tableSuffixList") List<String> tableSuffixList);

    /**
     * 根据指定的条件删除数据库符合条件的记录:tb_test
     *
     * @param example Example对象
     * @return int 删除影响的记录数
     */
    int deleteByExample(TbTestExample example);

    /**
     * 根据指定的条件和表后缀删除数据库符合条件的记录:tb_test
     *
     * @param example     Example对象
     * @param tableSuffix 表后缀
     * @return int
     */
    int deleteByExampleSuffix(@Param("example") TbTestExample example, @Param("tableSuffix") String tableSuffix);

    /**
     * 根据主键删除数据库的记录:tb_test
     *
     * @param userId 
     * @return int 删除影响的记录数
     */
    int deleteByPrimaryKey(Integer userId);

    /**
     * 根据主键和表后缀删除数据库的记录:tb_test
     *
     * @param userId      
     * @param tableSuffix 表后缀
     * @return int
     */
    int deleteByPrimaryKeySuffix(Integer userId, @Param("tableSuffix") String tableSuffix);

    /**
     * 新写入数据库记录:tb_test
     *
     * @param row 实体对象
     * @return int 写入影响的记录数
     */
    int insert(TbTest row);

    /**
     * 根据表后缀新写入数据库记录:tb_test
     *
     * @param row         实体对象
     * @param tableSuffix 表后缀
     * @return int
     */
    int insertSuffix(@Param("row") TbTest row, @Param("tableSuffix") String tableSuffix);

    /**
     * 动态字段,写入数据库记录:tb_test
     *
     * @param row 实体对象
     * @return int 写入影响的记录数
     */
    int insertSelective(TbTest row);

    /**
     * 根据表后缀,动态字段,写入数据库记录:tb_test
     *
     * @param row         实体对象
     * @param tableSuffix 表后缀
     * @return int
     */
    int insertSelectiveSuffix(@Param("row") TbTest row, @Param("tableSuffix") String tableSuffix);

    /**
     * 批量写入数据库记录:tb_test
     *
     * @param rows 记录集
     * @return int 写入影响的记录数
     */
    int insertBatch(@Param("rows") List<TbTest> rows);

    /**
     * 根据表后缀批量写入数据库记录:tb_test
     *
     * @param rows        记录集
     * @param tableSuffix 表后缀
     * @return int
     */
    int insertBatchSuffix(@Param("rows") List<TbTest> rows, @Param("tableSuffix") String tableSuffix);

    /**
     * 根据指定的条件查询符合条件的数据库记录:tb_test
     *
     * @param example Example对象
     * @return List<TbTest> 符合条件的记录
     */
    List<TbTest> selectByExample(TbTestExample example);

    /**
     * 根据指定的条件和表后缀查询符合条件的数据库记录:tb_test
     *
     * @param example         Example对象
     * @param tableSuffixList 表后缀集
     * @return List<TbTest>
     */
    List<TbTest> selectByExampleSuffix(@Param("example") TbTestExample example, @Param("tableSuffixList") List<String> tableSuffixList);

    /**
     * 根据指定的条件分页查询符合条件的数据库记录:tb_test
     *
     * @param example   Example对象
     * @param rowBounds 分页对象
     * @return Page<TbTest> 符合条件的记录
     */
    Page<TbTest> selectByExampleWithPage(@Param("example") TbTestExample example, @Param("rowBounds") RowBounds rowBounds);

    /**
     * 根据指定的条件分页和表后缀查询符合条件的数据库记录:tb_test
     *
     * @param example         Example对象
     * @param tableSuffixList 表后缀集
     * @param rowBounds       分页对象
     * @return Page<TbTest>
     */
    Page<TbTest> selectByExampleWithPageSuffix(@Param("example") TbTestExample example, @Param("tableSuffixList") List<String> tableSuffixList, @Param("rowBounds") RowBounds rowBounds);

    /**
     * 根据指定主键获取一条数据库记录:tb_test
     *
     * @param userId 
     * @return TbTesttb_test 实体对象
     */
    TbTest selectByPrimaryKey(Integer userId);

    /**
     * 根据指定主键和表后缀获取一条数据库记录:tb_test
     *
     * @param userId      
     * @param tableSuffix 表后缀
     * @return TbTest
     */
    TbTest selectByPrimaryKeySuffix(Integer userId, @Param("tableSuffix") String tableSuffix);

    /**
     * 动态根据指定的条件来更新符合条件的数据库记录:tb_test
     *
     * @param row     实体对象
     * @param example Example对象
     * @return int 更新影响的记录数
     */
    int updateByExampleSelective(@Param("row") TbTest row, @Param("example") TbTestExample example);

    /**
     * 动态根据指定的条件和表后缀来更新符合条件的数据库记录:tb_test
     *
     * @param row         实体对象
     * @param example     Example对象
     * @param tableSuffix 表后缀
     * @return int
     */
    int updateByExampleSelectiveSuffix(@Param("row") TbTest row, @Param("example") TbTestExample example, @Param("tableSuffix") String tableSuffix);

    /**
     * 根据指定的条件来更新符合条件的数据库记录:tb_test
     *
     * @param row     实体对象
     * @param example Example对象
     * @return int 更新影响的记录数
     */
    int updateByExample(@Param("row") TbTest row, @Param("example") TbTestExample example);

    /**
     * 根据指定的条件和表后缀来更新符合条件的数据库记录:tb_test
     *
     * @param row         实体对象
     * @param example     Example对象
     * @param tableSuffix 表后缀
     * @return int
     */
    int updateByExampleSuffix(@Param("row") TbTest row, @Param("example") TbTestExample example, @Param("tableSuffix") String tableSuffix);

    /**
     * 动态字段,根据主键来更新符合条件的数据库记录:tb_test
     *
     * @param row 实体对象
     * @return int 更新影响的记录数
     */
    int updateByPrimaryKeySelective(TbTest row);

    /**
     * 动态字段,根据主键和表后缀来更新符合条件的数据库记录:tb_test
     *
     * @param row         实体对象
     * @param tableSuffix 表后缀
     * @return int
     */
    int updateByPrimaryKeySelectiveSuffix(@Param("row") TbTest row, @Param("tableSuffix") String tableSuffix);

    /**
     * 根据主键来更新符合条件的数据库记录:tb_test
     *
     * @param row 实体对象
     * @return int 更新影响的记录数
     */
    int updateByPrimaryKey(TbTest row);

    /**
     * 根据主键和表后缀来更新符合条件的数据库记录:tb_test
     *
     * @param row         实体对象
     * @param tableSuffix 表后缀
     * @return int
     */
    int updateByPrimaryKeySuffix(@Param("row") TbTest row, @Param("tableSuffix") String tableSuffix);
}